#include<iostream>
#include<cstdlib>
#include<cerrno>
#include<cstring>
#include<unistd.h>
#include<signal.h>
#include<string>
#include<sys/types.h>


using namespace std;

int count=0;

void myhandler(int signo)
{
    cout<<"count:"<<count<<endl;
    exit(1);
}

int main()
{
    signal(SIGALRM,myhandler);
    alarm(1);
    
    while(1) ++count;



    return 0;
}




// //传参不正确，展示使用手册
// void Usage(string proc)
// {
//     cout<<"Usage:"<<endl;
//     cout<<"\t"<<proc<<" 信号编号 目标进程"<<endl;
// }

// //   ./mykill 9 1234
// int main(int argc,char*argv[])
// {
//     //argc：命令行参数个数
//     if(argc!=3)
//     {
//         //第一个参数是 比如： ./进程名
//         Usage(argv[0]);
//         exit(1);  
//     }

//     //信号
//     int signo=atoi(argv[1]);
//     //目标进程的pid
//     int target_id=atoi(argv[2]);

//     //发送信号
//     int n=kill(target_id,signo);
//     if(n!=0)
//     {
//         cerr<<errno<<" : "<<strerror(errno)<<endl;
//         exit(2);
//     }

//     return 0;
// }



// //OS会对handler函数进行回调
// //将捕捉的信号传参给signo
// void handler(int signo)
// {
//     cout<<"get signal:"<<signo<<endl;
// }

// int main()
// {
//     //对2号进程进行捕捉
//     signal(2,handler);

//     while(true)
//     {
//         cout<<"我是一个进程, 我的pid: "<<getpid()<<endl;
//         sleep(1);
//     }

//     return 0;
// }

